 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>LZXリファレンス connection</title>
  <othercredit role="translator">
    <firstname>Atuo</firstname>
    <surname>Seki</surname>
        <contrib>2006/05/08　翻訳初版</contrib>
 </othercredit>
<link rel="STYLESHEET" type="text/css" href="./styles.css" /></head>
<body>

<!-- ===================================================================== -->
<!-- = XML information goes here                                         = -->
<!-- ===================================================================== -->
<lzelement title="Connection">
    <lztier>LFC</lztier>
    <lzcategory>Persistent Connection</lzcategory>
    <lzshortdesc>
		永続的なコネクションと認証されたセッションを作成する
		コネクションマネージャ。
    </lzshortdesc>
    <lztag>tag-connection.xml</lztag>
    <lzapi>api-lzconnection.xml</lzapi>
</lzelement>

<p><tagname>connection</tagname>タグはOpenLaszloサーバーから送られた非同期なメッセージを
処理するコネクションマネージャーオブジェクトのようなものです。
永続的なコネクションやそれを<method>ディスコネクト</method>してクローズするには
<method>LzConnection.connect</method>メソッドを使用してください。</p>

<example title="Connection example" >
&lt;canvas debug="true" height="200"&gt;
  &lt;debug y="60"/&gt;
  &lt;connection authenticator="anonymous"&gt;
    &lt;method event="onconnect"&gt;
      Debug.write('connected');
    &lt;/method&gt;
    &lt;method event="ondisconnect"&gt;
      Debug.write('client disconnected');
    &lt;/method&gt;
  &lt;/connection&gt;

  &lt;view&gt;
    &lt;simplelayout axis="x" spacing="5"/&gt;
    &lt;button&gt;connect
      &lt;method event="onclick"&gt;
        canvas.connection.connect();
      &lt;/method&gt;
    &lt;/button&gt;
    &lt;button&gt;disconnect
      &lt;method event="onclick"&gt;
        canvas.connection.disconnect();
      &lt;/method&gt;
    &lt;/button&gt;
  &lt;/view&gt;
&lt;/canvas&gt;
</example>

<p>任意にクライアントサイドのコネクションをクローズする<method>clientDisconnect</method>
メソッドを使用することができます。サーバーはコネクションがクローズした事に気ずき、次にコネクションを終了します。
</p>

<p>前回の例では<tagname>connection</tagname>は<code>authenticator="anonymous"</code>
と宣言されていましたが、認証をしない永続的な接続では使用するべきではありません。
通常、バックエンド側の認証サーバーで認証したのを確認し、セッションクッキーを通し永続的なコネクションをします。
デフォルトで使用する認証サーバはOpenLaszlo Serverに付属されている
<code>AuthenticationServlet</code>です。
サーバーで使用するユーザーネームなどは <tt>lps/config/lzusers.xml</tt> にあります。
アプリケーションへのセッションとアンセッションはコネクション<method>login</method>、
<method>logout</method>メソッドを使用してください。</p>

<p>次の例ではユーザーネーム<code>adam</code>でどうログインするかを示します。
ログインした時のみコネクションができるのに注意してください。
</p>

<example title="Session Example">
&lt;canvas debug="true" height="200"&gt;
  &lt;debug y="60"/&gt;

  &lt;connection&gt;
    &lt;method event="onconnect"&gt;
      Debug.write('connected as ' + connection.getUsername()); 
    &lt;/method&gt;
    &lt;method event="ondisconnect"&gt;
      Debug.write('client disconnected');
    &lt;/method&gt;
  &lt;/connection&gt;

  &lt;datapointer xpath="connection:loginDset:/login[1]/authentication[1]/response[1]/status[1]"&gt;
    &lt;method event="ondata"&gt;
      var statusMessage = this.xpathQuery('@msg');
      Debug.write('login: ' + statusMessage);
    &lt;/method&gt;
    &lt;method event="onerror"&gt;
      Debug.write('login resulted in error');
    &lt;/method&gt;
    &lt;method event="ontimeout"&gt;
      Debug.write('login timed out');
    &lt;/method&gt;
  &lt;/datapointer&gt;

  &lt;datapointer xpath="connection:logoutDset:/logout[1]/authentication[1]/response[1]/status[1]"&gt;
    &lt;method event="ondata"&gt;
      var statusMessage = this.xpathQuery('@msg');
      Debug.write('logout: ' + statusMessage);
    &lt;/method&gt;
    &lt;method event="onerror"&gt;
      Debug.write('logout resulted in error');
    &lt;/method&gt;
    &lt;method event="ontimeout"&gt;
      Debug.write('logout timed out');
    &lt;/method&gt;
  &lt;/datapointer&gt;

  &lt;view&gt;
    &lt;simplelayout axis="x" spacing="5"/&gt;
    &lt;button&gt;login
      &lt;method event="onclick"&gt;
        canvas.connection.login('adam', 'adam');
      &lt;/method&gt;
    &lt;/button&gt;
    &lt;button&gt;logout
      &lt;method event="onclick"&gt;
        canvas.connection.logout();
      &lt;/method&gt;
    &lt;/button&gt;
    &lt;simplelayout axis="x" spacing="5"/&gt;
    &lt;button&gt;connect
      &lt;method event="onclick"&gt;
        canvas.connection.connect();
      &lt;/method&gt;
    &lt;/button&gt;
    &lt;button&gt;disconnect
      &lt;method event="onclick"&gt;
          canvas.connection.disconnect();
      &lt;/method&gt;
    &lt;/button&gt;
  &lt;/view&gt;
&lt;/canvas&gt;
</example>

<p>一度コネクションが張られるとクライアントは<tagname>connectiondatasource</tagname>
タグを使用することで、メッセージを送ったり、受け取ったりできます。</p>

<h2>Sample Apps</h2>
<p><tagname>connection</tagname>タグが使用されるサンプルアプリケーション：</p>
<ul>
    <li> <a href="${demos}chat">Chat</a></li>
    <li> <a href="${demos}dashboard">Dashboard</a></li>
</ul>

<seealso>
<tags>connectiondatasource</tags>
<dguide id="persistent_connection" title="Persistent Connection">for
more information on authentication, asynchronous XML messages, and
other persistent connection-related matters</dguide>
</seealso>

</body>
</html>
<!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
* Copyright 2001-2004 Laszlo Systems, Inc.  All Rights Reserved.              *
* Use is subject to license terms.                                            *
* X_LZ_COPYRIGHT_END ****************************************************** -->
